package com.wkck.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.wkck.VO.PageResult;
import com.wkck.VO.UserResumesInfoUnIncludeOnlineResumesVo;
import com.wkck.VO.UserResumesInfoVo;
import com.wkck.domain.LResume;
import com.wkck.domain.LResumeEducateExperience;
import com.wkck.domain.LResumePracticeExperience;
import com.wkck.domain.LResumeProjectExperience;
import com.wkck.dto.LResumeBackendQueryConditionsDto;
import com.wkck.dto.LResumeBackendQueryFilesConditionsDto;
import com.wkck.dto.ResumeHobbyDto;
import com.wkck.dto.ResumeHonorAwardDto;
import com.wkck.result.Result;

import javax.servlet.http.HttpServletResponse;
import java.util.List;
import java.util.Map;

/**
 * @Author: CK
 * @Date: 2024/03/01/20:37
 * @Description:
 */
public interface LResumeService extends IService<LResume> {

    /***
    * @Author: CK
    * @Date: 2024/3/1
    * @Param: [id]
    * @Description: 根据用户id获得用户所有简历信息
    */
    UserResumesInfoVo getUserResumesById(Integer id);

    /***
     * @Author: CK
     * @Date: 2024/3/1
     * @Description: 添加简历基本信息
     */
     Map<String, Object> insertUserBaseInfo(LResume resume);

    /***
     * @Author: CK
     * @Date: 2024/3/1
     * @Param: [file, id]
     * @Description: 添加简历头像
     */
    Boolean insertUserBaseAvatarById(String localFilePath, String filename,  Long id, Integer userId);

    /***
    * @Author: CK
    * @Date: 2024/3/3
    * @Param: [path, filename, size, id]
    * @Description: 添加简历文件
    */
    Boolean insertUserResumeFile(String path, String filename, long size, Integer id);

    /***
    * @Author: CK
    * @Date: 2024/3/4
    * @Param: [id]
    * @Description: 根据在线简历id下载简历
    */
    void downloadUserFileById(String id, HttpServletResponse response);

    /***
    * @Author: CK
    * @Date: 2024/3/5
    * @Param: [id]
    * @Description: 根据id删除用户的在线简历文件
    */
    Boolean deleteUserOnlineResumeFileById(String id);

    /***
     * @Author: CK
     * @Date: 2024/3/5
     * @Param: [edu]
     * @Description: 修改或添加用户简历的教育经历信息
     */
    Boolean modifyOrSaveUserResumeEduExperienceInfo(LResumeEducateExperience edu);

    /***
     * @Author: CK
     * @Date: 2024/3/5
     * @Param: [edu]
     * @Description: 修改或添加用户简历的实习经历信息
     */
    Boolean modifyOrSaveUserResumePraExperienceInfo(LResumePracticeExperience pra);

    /***
     * @Author: CK
     * @Date: 2024/3/5
     * @Param: [edu]
     * @Description: 修改或添加用户简历的项目经历信息
     */
    Boolean modifyOrSaveUserResumeProExperienceInfo(LResumeProjectExperience pro);

    /***
     * @Author: CK
     * @Date: 2024/3/7
     * @Param: [resumeId, userId]
     * @Description: 根据用户id和简历id得到简历信息
     */
    UserResumesInfoUnIncludeOnlineResumesVo getUserResumeInfoByUserIdAndResumeId(Integer userId, Long resumeId);

    /***
    * @Author: CK
    * @Date: 2024/3/28
    * @Param: [resumeId]
    * @Description: 根据简历id得到简历信息
    */
    UserResumesInfoUnIncludeOnlineResumesVo getUserResumeInfoByResumeId(Long resumeId);

    /***
     * @Author: CK
     * @Date: 2024/3/10
     * @Param: [id]
     * @Description: 根据简历id删除简历信息
     */
    Boolean deleteUserResumeById(Long id);

    /***
    * @Author: CK
    * @Date: 2024/3/10
    * @Param: [localFilePath, filename, id, userId]
    * @Description: 编辑用户头像
    */
    Boolean modifyUserResumeBaseAvatarById(String localFilePath, String filename, Long id, Integer userId);

    /***
     * @Author: CK
     * @Date: 2024/3/11
     * @Param: [honorAward]
     * @Description: 修改用户简历荣誉奖项
     */
    Boolean modifyUserResumeHonorAward(ResumeHonorAwardDto honorAward);

    /***
     * @Author: CK
     * @Date: 2024/3/11
     * @Param: [hobbyDto]
     * @Description: 修改用户简历个人兴趣与自我评价
     */
    Boolean modifyUserResumeHobby(ResumeHobbyDto hobbyDto);

    /***
     * @Author: CK
     * @Date: 2024/3/27
     * @Param: [dto]
     * @Description: 得到系统中所有简历
     */
    PageResult getAllUsersPlatformResume(LResumeBackendQueryConditionsDto dto);

    /***
     * @Author: CK
     * @Date: 2024/3/27
     * @Param: [dto]
     * @Description: 得到系统中所有简历
     */
    PageResult getAllUsersFileResume(LResumeBackendQueryFilesConditionsDto dto);

    /***
     * @Author: CK
     * @Date: 2024/3/28
     * @Param: [map]
     * @Description: 删除简历文件ids
     */
    Boolean removeFilesByIds(List<String> ids);
}
